package juego.sprites;

import java.util.ArrayList;

import javax.swing.ImageIcon;

public class Animacion {
	
	private ArrayList<ImageIcon> etapas;
	private int etapaActual;
	private int duracionEtapa;
	private int ultimoCambioEtapa;
	private boolean actualizacionCompleta;
	
	public Animacion(int duracionEtapa) {
		this.etapas = new ArrayList<ImageIcon>();
		this.etapaActual = 0;
		this.duracionEtapa = duracionEtapa;
		this.ultimoCambioEtapa = 0;
		this.actualizacionCompleta = false;
	}
	
	public void agregarEtapa(ImageIcon img) {
		etapas.add(img);
	}
	
	public void actualizar(double dt) {		
		if (etapas.size() > 1) {
			ultimoCambioEtapa += dt * 1000;
			if (ultimoCambioEtapa > duracionEtapa) {
				ultimoCambioEtapa = 0;
				etapaActual++;
				if (etapaActual >= etapas.size()) {
					etapaActual = 0;
				}
			}
		}
	}
	
	public boolean actualizarSinRepetir(double dt) {		
		if (!actualizacionCompleta) {
			if (etapas.size() > 1) {
				ultimoCambioEtapa += dt;
				if (ultimoCambioEtapa > duracionEtapa) {
					ultimoCambioEtapa = 0;
					etapaActual++;
					if (etapaActual >= etapas.size()) {
						etapaActual = 0;
						actualizacionCompleta = true;
					}
				}
			}
		}
		return actualizacionCompleta;
	}
	
	public void reiniciar() {
		etapaActual = 0;
		ultimoCambioEtapa = 0;
		actualizacionCompleta = false;
	}
	
	public ImageIcon getEstadoActual() {
		if (etapaActual < etapas.size()) {
			return etapas.get(etapaActual);
		}
		return null;
	}
	
	public int getNumEtapas() {
		return etapas.size();
	}

	public ArrayList<ImageIcon> getEtapas() {
		return etapas;
	}

	public void setEtapas(ArrayList<ImageIcon> etapas) {
		this.etapas = etapas;
	}
	
}